//
//  NSDate+Sting.swift
//  7-12新工程处理新浪返回的日期
//
//  Created by cyc on 16/3/9.
//  Copyright © 2016年 cyc. All rights reserved.
//

import Foundation

extension NSDate {
    
    class func sinaDateStringToDate(dateString: String) -> NSDate {
        // 日期格式化
        let dateFormatter = NSDateFormatter()
        
        // 要处理的格式
        dateFormatter.dateFormat = "EEE MMM dd HH:mm:ss zzz yyyy"
        
        // 在真机上需要添加
        dateFormatter.locale = NSLocale(localeIdentifier: "EN")
        
        // 日期转换
        return dateFormatter.dateFromString(dateString) ?? NSDate()
    }
    ///  返回日期描述字符串
    ///
    ///     格式如下
    ///     -   刚刚(一分钟内)
    ///     -   X分钟前(一小时内)
    ///     -   X小时前(当天)
    ///     -   昨天 HH:mm(昨天)
    ///     -   MM-dd HH:mm(一年内)
    ///     -   yyyy-MM-dd HH:mm(更早期)
    func sinaDateDescription() -> String {
        // NSCalendar 专门处理时间的
        let calendar = NSCalendar.currentCalendar()
        
        // 判断是否是当天
        if calendar.isDateInToday(self) {
            // 创建当前时间
            let delta = Int(NSDate().timeIntervalSinceDate(self))
            
            if delta < 60 {
                // 一分钟内
                return "刚刚"
            } else if delta < 60 * 60 {
                // 一小时内
                return "\(delta / 60)分钟前"
            } else {
                // x小时前
                return "\(delta / 60 / 60)小时前"
            }
        }
        var fmt = ""
        
        // 是否是昨天
        if calendar.isDateInYesterday(self) {
            fmt = "昨天 HH:mm"
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedAscending {
            // 2个时间比较
            // date1: NSDate
            // toDate:
            // toUnitGranularity: 比较的单位: 年,月,日
            // 一年以外
            fmt = "yyyy-MM-dd HH:mm"
        //直接处理较早的时间
        } else if calendar.compareDate(self, toDate: NSDate(), toUnitGranularity: NSCalendarUnit.Year) == NSComparisonResult.OrderedSame {
            // 同一年
            fmt = "MM-dd HH:mm"
        }
        
        // 将NSDate转成指定格式的字符串
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = fmt
        dateFormatter.locale = NSLocale(localeIdentifier: "EN")
        
        return dateFormatter.stringFromDate(self)
    }
}